package com.ruoyi.dictionaries.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import org.openoa.base.vo.BusinessDataVo;

import java.util.Date;
import java.util.List;

/**
 * 调停课审批VO类
 */
@Data
public class ApprovalClassAdjustmentvVo extends BusinessDataVo {

    /**
     * 课程安排详情ID
     */
    private String courseScheduleDetailsId;

    /**
     * 班级课程安排详情ID
     */
    private String classScheduleDetailedId;

    /**
     * 原课程ID
     */
    private String originalCourseId;

    /**
     * 原课程名称
     */
    private String originalClassName;

    /**
     * 原授课教师ID
     */
    private String originalTeacherId;

    /**
     * 原教室
     */
    private String originalClassroom;

    /**
     * 原开始时间（如：第1节）
     */
    private String originalStartTime;

    /**
     * 原结束时间（如：第2节）
     */
    private String originalEndTime;

    /**
     * 原星期（数字，如：3表示周三）
     */
    private Integer originalWeekDay;

    /**
     * 原周类型
     */
    private Object originalWeekType;

    /**
     * 原开始周
     */
    private Integer originalStartWeek;

    /**
     * 原结束周
     */
    private Integer originalEndWeek;

    /**
     * 调整范围（如：temporary-临时）
     */
    private String adjustmentScope;

    /**
     * 新教室ID
     */
    private String newClassroomId;

    /**
     * 新开始时间（如：10:00）
     */
    private String newStartTime;

    /**
     * 新结束时间（如：11:40）
     */
    private String newEndTime;

    /**
     * 新星期（数字，如：4表示周四）
     */
    private Integer newWeekDay;

    /**
     * 新周类型
     */
    private Integer newWeekType;

    /**
     * 新开始周
     */
    private String newStartWeek;

    /**
     * 新结束周
     */
    private String newEndWeek;

    /**
     * 临时调整周数列表
     */
    private List<Integer> tempAdjustWeeks;

    /**
     * 调整原因（数字编码）
     */
    private Integer adjustmentReason;

    /**
     * 调整说明
     */
    private String adjustmentDescription;

    /**
     * 申请人ID
     */
    private String applicantId;

    /**
     * 联系电话
     */
    private String contactPhone;

    /**
     * 紧急程度（数字，如：1）
     */
    private Integer urgentLevel;

    /**
     * 申请日期
     */
    private String applyDate;

    /**
     * 备注
     */
    private String remarks;

    @Excel(name = "材料审核状态", readConverterExp = "齐=全/缺少/审核通过等")
    private String materialsStatus;

    /** 一级审核人（如：班主任） */
    @Excel(name = "一级审核人", readConverterExp = "如=：班主任")
    private String reviewer1;

    /** 一级审核意见 */
    @Excel(name = "一级审核意见")
    private String reviewer1Opinion;

    /** 一级审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "一级审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reviewer1Time;

    /** 一级审核结果（通过/驳回/待审核） */
    @Excel(name = "一级审核结果", readConverterExp = "通=过/驳回/待审核")
    private String reviewer1Result;

    /** 二级审核人（如：系主任） */
    @Excel(name = "二级审核人", readConverterExp = "如=：系主任")
    private String reviewer2;

    /** 二级审核意见 */
    @Excel(name = "二级审核意见")
    private String reviewer2Opinion;

    /** 二级审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "二级审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reviewer2Time;

    /** 二级审核结果（通过/驳回/待审核） */
    @Excel(name = "二级审核结果", readConverterExp = "通=过/驳回/待审核")
    private String reviewer2Result;

    /** 三级审核人（如：教务处主任） */
    @Excel(name = "三级审核人", readConverterExp = "如=：教务处主任")
    private String reviewer3;

    /** 三级审核意见 */
    @Excel(name = "三级审核意见")
    private String reviewer3Opinion;

    /** 三级审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "三级审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reviewer3Time;

    /** 最终审核结果（通过/驳回/待审核） */
    @Excel(name = "最终审核结果", readConverterExp = "通=过/驳回/待审核")
    private String reviewer3Result;
}